package cn.com.tiptop.license.controller;

import java.io.File;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import cn.com.tiptop.comon.AjaxObject;
import cn.com.tiptop.comon.Code;
import cn.com.tiptop.util.FileUtils;
import cn.com.tiptop.util.Md5Utils;
import cn.com.tiptop.util.RSAUtils;

@Controller
@RequestMapping("/importLicense")
public class ImportLicense {
	
	@SuppressWarnings("deprecation")
	@RequestMapping("/upload")
	@ResponseBody
	public AjaxObject image(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request){
		String realpath = null;
		try{
			realpath = request.getRealPath("")+"WEB-INF"+File.separatorChar+"upload"
			+File.separatorChar+UUID.randomUUID().toString()+"_"+file.getOriginalFilename();
			System.out.println(realpath);
			File newFile = new File(realpath);
			file.transferTo(newFile);
			if(RSAUtils.RSADecodeFile(RSAUtils.getPrivateKey(RSAUtils.getPrivateKey()),newFile.getPath())) {
				String MD5 = FileUtils.subtractMethodFile(newFile.getPath(),32);
				String fMD5 = Md5Utils.fileMD5(newFile.getPath());
				if(MD5.equals(fMD5)) {
					//TODO 解析授权文件
//					PRODUCT_NAME=产品名称
//					PRODUCT_VERSION=产品版本号
//					PRODUCT_SERIAL_NO=产品序列号
//					CPU_SERIAL_NO=产品机器处理器序列号
//					HARDDISK_SERIAL_NO=产品机器磁盘序列号
//					MAC_SERIAL_NO=产品机器物理地址序列号
//					LICENSE_WEB=菜单json,小粒度控制，包含服务时间，包含服务id
//					LICENSE_SERVICE=服务json,小粒度控制，包含服务时间，包含服务id
//					CLIENT_NUMBER=用户数
//					AUTH_TYPE=1（0：试用 1：正式（时间段） 2：正式（永久））
//					AUTU_BENGIN_TIME=2017/10/16 00:00:00
//					AUTU_END_TIME=2017/10/31 00:00:00
					
					return new AjaxObject(Code.REQUEST_SUCCESS,Code.getMsg(Code.REQUEST_SUCCESS));
				}
				newFile.delete();
				return new AjaxObject(Code.TRY_EXCEPTION,Code.getMsg(Code.TRY_EXCEPTION));
			}
			newFile.delete();
			return new AjaxObject(Code.TRY_EXCEPTION,Code.getMsg(Code.TRY_EXCEPTION));
		}catch (Exception e) {
			e.printStackTrace();
			return new AjaxObject(Code.TRY_EXCEPTION,Code.getMsg(Code.TRY_EXCEPTION));
		}
	}
}
